package com.dxg.msns.user.enums;

/**
 * 用户角色状态枚举
 * 
 * @author dxg
 */
public enum UserRoleEnum {

    /** 普通用户 */
    NORMAL_USER(0, "普通用户"),

    /** 音乐人 */
    SINGER(1, "音乐人"),

    /** 音乐人申请中 */
    SINGER_APPLYING(-1, "音乐人申请中");

    private final Integer code;
    private final String description;

    UserRoleEnum(Integer code, String description) {
        this.code = code;
        this.description = description;
    }

    public Integer getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    /**
     * 根据code获取枚举
     * 
     * @param code 状态码
     * @return 对应的枚举，如果找不到返回null
     */
    public static UserRoleEnum getByCode(Integer code) {
        if (code == null) {
            return null;
        }
        for (UserRoleEnum roleEnum : UserRoleEnum.values()) {
            if (roleEnum.getCode().equals(code)) {
                return roleEnum;
            }
        }
        return null;
    }

    /**
     * 判断是否为有效的角色状态码
     * 
     * @param code 状态码
     * @return true表示有效，false表示无效
     */
    public static boolean isValidCode(Integer code) {
        return getByCode(code) != null;
    }

    @Override
    public String toString() {
        return "UserRoleEnum{" +
                "code=" + code +
                ", description='" + description + '\'' +
                '}';
    }
}